package com.logicalthinking.socialmall.common.vo.responseVo.product;

import com.github.chenlijia1111.utils.common.constant.BooleanConstant;
import com.github.chenlijia1111.utils.core.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.Objects;

/**
 * 后台产品列表对象
 *
 * @author Chen LiJia
 * @since 2020/2/19
 */
@ApiModel
@Setter
@Getter
public class AdminProductListVo {

    /**
     * 商品编号
     */
    @ApiModelProperty(value = "商品编号")
    private String productId;

    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String productName;

    /**
     * 商品类别
     */
    @ApiModelProperty(value = "商品类别")
    private String categoryName;

    /**
     * 价格
     * 通过商品补充参数最大价格最小价格进行查询
     */
    @ApiModelProperty(value = "价格")
    private String priceRange;

    /**
     * 销量
     * 通过商品补充参数查询
     */
    @ApiModelProperty(value = "销量")
    private String productSalesCount;

    /**
     * 发布人
     * 取名字
     * 正常逻辑下，能发布商品的用户都是认证过的，肯定有名字
     */
    @ApiModelProperty(value = "发布人")
    private String releaseUserName;

    /**
     * 发布地址
     */
    @ApiModelProperty(value = "发布地址")
    private String releaseAddress;

    /**
     * 添加时间
     */
    @ApiModelProperty(value = "添加时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    /**
     * 交易方式是否支持线上交易 0否1是
     */
    private Integer transactionTypeSupportOnline;

    /**
     * 交易方式是否支持当面交易 0否1是
     */
    private Integer transactionTypeSupportInperson;

    /**
     * 交易类型
     */
    @ApiModelProperty(value = "交易类型")
    private String transactionTypeName;

    /**
     * 上架状态 0下架 1上架
     */
    @ApiModelProperty(value = "上架状态 0下架 1上架")
    private Integer shelfStatus;

    public AdminProductListVo createTransactionTypeName() {
        StringBuilder sb = new StringBuilder();
        if (Objects.equals(BooleanConstant.YES_INTEGER, this.transactionTypeSupportOnline)) {
            sb.append("快递/");
        }
        if (Objects.equals(BooleanConstant.YES_INTEGER, this.transactionTypeSupportInperson)) {
            sb.append("当面交易");
        }
        String s = sb.toString();
        if (s.endsWith("/")) {
            s = sb.deleteCharAt(sb.length() -1).toString();
        }
        this.transactionTypeName = s;
        return this;
    }

    /**
     * 处理价格范围
     * @param priceRange
     */
    public void setPriceRange(String priceRange) {
        if (StringUtils.isNotEmpty(priceRange)) {
            String[] split = priceRange.split("-");
            if (split.length == 2 && Objects.equals(split[0], split[1])) {
                priceRange = split[0];
            }
        }
        this.priceRange = priceRange;
    }
}
